using System;
using System.Collections.Generic;
using DataContracts;

namespace TrainingWorkshop.MVPWebsite.User
{
    public interface IUserController
    {
        /// <summary>
        /// Save a New User
        /// </summary>
        /// <param name="userDTO"></param>
        /// <returns></returns>
         bool AddNewUser(UserDTO userDTO);
        

        /// <summary>
        /// Delete User
        /// </summary>
        /// <param name="userId"></param>
         void DeleteUser(int userId);
        

        /// <summary>
        /// Update User
        /// </summary>
        /// <param name="userDTO"></param>
         void UpdateUser(UserDTO userDTO);
       

        /// <summary>
        /// Get All User
        /// </summary>
        /// <returns></returns>
         List<UserDTO> GetAllUser();
       
        /// <summary>
        /// Get All Department
        /// </summary>
        /// <returns></returns>
         List<DepartmentDTO> GetAllDepartment();
        
        /// <summary>
        /// Get User by Current UserId
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
         UserDTO GetUserById(int userId);
        

        /// <summary>
        /// Search User by Complex Conditions
        /// </summary>
        /// <param name="departmentId"></param>
        /// <param name="firstName"></param>
        /// <param name="lastName"></param>
        /// <returns></returns>
         List<UserDTO> SearchUser(int departmentId, string firstName, string lastName);
        

        /// <summary>
        /// Get All User Role
        /// </summary>
        /// <returns></returns>
         List<RoleDTO> GetAllUserRole();
        
    }
}
